package com.aco.fatureapp.model.billing;

import java.io.Serializable;

import br.com.ac.fatureweb.integration.billing.LogLeituraVO;

import com.orm.SugarRecord;

public class LogLeitura extends SugarRecord<LogLeitura> implements Serializable {

	private static final long serialVersionUID = 200358206175996777L;

	private Long leitura;

	private Long dataLeitura;

	private Double valorConta;

	private Long qtdeImpressao;

	private Long qtdeCorrecao;

	private Boolean leituraConfirmada;

	/*
	 * Ocorrência que o leiturista informa.
	 */
	private Long codOcorrencia1;

	private Long idLeiturista;

	private Long inscricao;

	private Long idCarga;

	private String observacao;

	/*
	 * Ocorrência informada pelo sistema.
	 */
	private Long codOcorrencia2;

	private Integer contaRetida;

	private Boolean contaRegerada;

	private Boolean foto;

	private Double longitude;

	private Double latitude;

	private Long consumo;

	private Double valorAgua;

	private Double valorEsgoto;

	private Double valorServicos;

	private Double valorTotal;

	private Long mes;

	private Long ano;

	private boolean printResumo;

	/*
	 * Se TRUE, indica que a leitura foi enviada automaticamente através de um
	 * serviço que roda em background periodicamente.
	 */
	private Boolean flgEnvioAutomatico;

	public LogLeitura() {
		super();
	}

	public LogLeitura(Long leitura, Long dataLeitura, Double valorConta,
			Long qtdeImpressao, Long qtdeCorrecao, Boolean leituraConfirmada,
			Long codOcorrencia1, Long idLeiturista, Long inscricao,
			Long idCarga, String observacao, Long codOcorrencia2,
			Integer contaRetida, Boolean contaRegerada, Boolean foto,
			Double longitude, Double latitude) {
		super();
		this.leitura = leitura;
		this.dataLeitura = dataLeitura;
		this.valorConta = valorConta;
		this.qtdeImpressao = qtdeImpressao;
		this.qtdeCorrecao = qtdeCorrecao;
		this.leituraConfirmada = leituraConfirmada;
		this.codOcorrencia1 = codOcorrencia1;
		this.idLeiturista = idLeiturista;
		this.inscricao = inscricao;
		this.idCarga = idCarga;
		this.observacao = observacao;
		this.codOcorrencia2 = codOcorrencia2;
		this.contaRetida = contaRetida;
		this.contaRegerada = contaRegerada;
		this.foto = foto;
		this.longitude = longitude;
		this.latitude = latitude;
	}

	public LogLeitura(Long leitura, Long dataLeitura, Double valorConta,
			Long qtdeImpressao, Long qtdeCorrecao, Boolean leituraConfirmada,
			Long codOcorrencia1, Long idLeiturista, Long inscricao,
			Long idCarga, String observacao, Long codOcorrencia2,
			Integer contaRetida, Boolean contaRegerada, Boolean foto,
			Double longitude, Double latitude, Long consumo, Double valorAgua,
			Double valorEsgoto, Double valorServicos, Double valorTotal,
			Long mes, Long ano) {
		super();
		this.leitura = leitura;
		this.dataLeitura = dataLeitura;
		this.valorConta = valorConta;
		this.qtdeImpressao = qtdeImpressao;
		this.qtdeCorrecao = qtdeCorrecao;
		this.leituraConfirmada = leituraConfirmada;
		this.codOcorrencia1 = codOcorrencia1;
		this.idLeiturista = idLeiturista;
		this.inscricao = inscricao;
		this.idCarga = idCarga;
		this.observacao = observacao;
		this.codOcorrencia2 = codOcorrencia2;
		this.contaRetida = contaRetida;
		this.contaRegerada = contaRegerada;
		this.foto = foto;
		this.longitude = longitude;
		this.latitude = latitude;
		this.consumo = consumo;
		this.valorAgua = valorAgua;
		this.valorEsgoto = valorEsgoto;
		this.valorServicos = valorServicos;
		this.valorTotal = valorTotal;
		this.mes = mes;
		this.ano = ano;
	}

	public LogLeitura(LogLeituraVO logLeituraVO) {
		super();
		this.leitura = logLeituraVO.getLeitura();
		this.dataLeitura = logLeituraVO.getDataLeitura();
		this.valorConta = logLeituraVO.getValorConta();
		this.qtdeImpressao = logLeituraVO.getQtdeImpressao();
		this.qtdeCorrecao = logLeituraVO.getQtdeCorrecao();
		this.leituraConfirmada = logLeituraVO.getLeituraConfirmada();
		this.codOcorrencia1 = logLeituraVO.getCodOcorrencia1();
		this.idLeiturista = logLeituraVO.getIdLeiturista();
		this.inscricao = logLeituraVO.getInscricao();
		this.idCarga = logLeituraVO.getIdCarga();
		this.observacao = logLeituraVO.getObservacao();
		this.codOcorrencia2 = logLeituraVO.getCodOcorrencia2();
		this.contaRetida = logLeituraVO.getContaRetida();
		this.contaRegerada = logLeituraVO.getContaRegerada();
		this.foto = logLeituraVO.getFoto();
		this.longitude = logLeituraVO.getLongitude();
		this.latitude = logLeituraVO.getLatitude();
	}

	public LogLeitura(Long leitura, Long dataLeitura, Long codOcorrencia1,
			Long inscricao, Long idCarga) {
		super();
		this.leitura = leitura;
		this.dataLeitura = dataLeitura;
		this.codOcorrencia1 = codOcorrencia1;
		this.inscricao = inscricao;
		this.idCarga = idCarga;
	}

	/**
	 * @return the leitura
	 */
	public Long getLeitura() {
		return leitura;
	}

	/**
	 * @param leitura
	 *            the leitura to set
	 */
	public void setLeitura(Long leitura) {
		this.leitura = leitura;
	}

	/**
	 * @return the dataLeitura
	 */
	public Long getDataLeitura() {
		return dataLeitura;
	}

	/**
	 * @param dataLeitura
	 *            the dataLeitura to set
	 */
	public void setDataLeitura(Long dataLeitura) {
		this.dataLeitura = dataLeitura;
	}

	/**
	 * @return the valorConta
	 */
	public Double getValorConta() {
		return valorConta;
	}

	/**
	 * @param valorConta
	 *            the valorConta to set
	 */
	public void setValorConta(Double valorConta) {
		this.valorConta = valorConta;
	}

	/**
	 * @return the qtdeImpressao
	 */
	public Long getQtdeImpressao() {
		return qtdeImpressao;
	}

	/**
	 * @param qtdeImpressao
	 *            the qtdeImpressao to set
	 */
	public void setQtdeImpressao(Long qtdeImpressao) {
		this.qtdeImpressao = qtdeImpressao;
	}

	/**
	 * @return the leituraConfirmada
	 */
	public Boolean getLeituraConfirmada() {
		return leituraConfirmada;
	}

	/**
	 * @param leituraConfirmada
	 *            the leituraConfirmada to set
	 */
	public void setLeituraConfirmada(Boolean leituraConfirmada) {
		this.leituraConfirmada = leituraConfirmada;
	}

	/**
	 * @return the codOcorrencia1
	 */
	public Long getCodOcorrencia1() {
		return codOcorrencia1;
	}

	/**
	 * @param codOcorrencia1
	 *            the codOcorrencia1 to set
	 */
	public void setCodOcorrencia1(Long codOcorrencia1) {
		this.codOcorrencia1 = codOcorrencia1;
	}

	/**
	 * @return the idLeiturista
	 */
	public Long getIdLeiturista() {
		return idLeiturista;
	}

	/**
	 * @param idLeiturista
	 *            the idLeiturista to set
	 */
	public void setIdLeiturista(Long idLeiturista) {
		this.idLeiturista = idLeiturista;
	}

	/**
	 * @return the inscricao
	 */
	public Long getInscricao() {
		return inscricao;
	}

	/**
	 * @param inscricao
	 *            the inscricao to set
	 */
	public void setInscricao(Long inscricao) {
		this.inscricao = inscricao;
	}

	/**
	 * @return the idCarga
	 */
	public Long getIdCarga() {
		return idCarga;
	}

	/**
	 * @param idCarga
	 *            the idCarga to set
	 */
	public void setIdCarga(Long idCarga) {
		this.idCarga = idCarga;
	}

	/**
	 * @return the observacao
	 */
	public String getObservacao() {
		return observacao;
	}

	/**
	 * @param observacao
	 *            the observacao to set
	 */
	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

	/**
	 * @return the codOcorrencia2
	 */
	public Long getCodOcorrencia2() {
		return codOcorrencia2;
	}

	/**
	 * @param codOcorrencia2
	 *            the codOcorrencia2 to set
	 */
	public void setCodOcorrencia2(Long codOcorrencia2) {
		this.codOcorrencia2 = codOcorrencia2;
	}

	/**
	 * @return the contaRetida
	 */
	public Integer getContaRetida() {
		return contaRetida;
	}

	/**
	 * @param contaRetida
	 *            the contaRetida to set
	 */
	public void setContaRetida(Integer contaRetida) {
		this.contaRetida = contaRetida;
	}

	/**
	 * @return the contaRegerada
	 */
	public Boolean getContaRegerada() {
		return contaRegerada;
	}

	/**
	 * @param contaRegerada
	 *            the contaRegerada to set
	 */
	public void setContaRegerada(Boolean contaRegerada) {
		this.contaRegerada = contaRegerada;
	}

	/**
	 * @return the foto
	 */
	public Boolean getFoto() {
		return foto;
	}

	/**
	 * @param foto
	 *            the foto to set
	 */
	public void setFoto(Boolean foto) {
		this.foto = foto;
	}

	/**
	 * @return the longitude
	 */
	public Double getLongitude() {
		return longitude;
	}

	/**
	 * @param longitude
	 *            the longitude to set
	 */
	public void setLongitude(Double longitude) {
		this.longitude = longitude;
	}

	/**
	 * @return the latitude
	 */
	public Double getLatitude() {
		return latitude;
	}

	/**
	 * @param latitude
	 *            the latitude to set
	 */
	public void setLatitude(Double latitude) {
		this.latitude = latitude;
	}

	public Long getQtdeCorrecao() {
		return qtdeCorrecao;
	}

	public void setQtdeCorrecao(Long qtdeCorrecao) {
		this.qtdeCorrecao = qtdeCorrecao;
	}

	public Long getConsumo() {
		return consumo;
	}

	public void setConsumo(Long consumo) {
		this.consumo = consumo;
	}

	public Double getValorAgua() {
		return valorAgua;
	}

	public void setValorAgua(Double valorAgua) {
		this.valorAgua = valorAgua;
	}

	public Double getValorEsgoto() {
		return valorEsgoto;
	}

	public void setValorEsgoto(Double valorEsgoto) {
		this.valorEsgoto = valorEsgoto;
	}

	public Double getValorServicos() {
		return valorServicos;
	}

	public void setValorServicos(Double valorServicos) {
		this.valorServicos = valorServicos;
	}

	public Double getValorTotal() {
		return valorTotal;
	}

	public void setValorTotal(Double valorTotal) {
		this.valorTotal = valorTotal;
	}

	public Long getMes() {
		return mes;
	}

	public void setMes(Long mes) {
		this.mes = mes;
	}

	public Long getAno() {
		return ano;
	}

	public void setAno(Long ano) {
		this.ano = ano;
	}

	public Boolean getFlgEnvioAutomatico() {
		return flgEnvioAutomatico;
	}

	public void setFlgEnvioAutomatico(Boolean flgEnvioAutomatico) {
		this.flgEnvioAutomatico = flgEnvioAutomatico;
	}

	public boolean isPrintResumo() {
		return printResumo;
	}

	public void setPrintResumo(boolean printResumo) {
		this.printResumo = printResumo;
	}

	/*
	 * (non-Javadoc)
	 *
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		result = prime * result + ((idCarga == null) ? 0 : idCarga.hashCode());
		result = prime * result
				+ ((inscricao == null) ? 0 : inscricao.hashCode());
		return result;
	}

	/*
	 * (non-Javadoc)
	 *
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof LogLeitura)) {
			return false;
		}
		LogLeitura other = (LogLeitura) obj;
		if (id == null) {
			if (other.id != null) {
				return false;
			}
		}
		else if (!id.equals(other.id)) {
			return false;
		}
		if (idCarga == null) {
			if (other.idCarga != null) {
				return false;
			}
		}
		else if (!idCarga.equals(other.idCarga)) {
			return false;
		}
		if (inscricao == null) {
			if (other.inscricao != null) {
				return false;
			}
		}
		else if (!inscricao.equals(other.inscricao)) {
			return false;
		}
		return true;
	}

}
